package org.osiris.persistence.controllers;

import java.util.Date;
import java.util.List;

import javax.persistence.EntityManager;

import org.osiris.persistence.Proyecto;
import org.osiris.persistence.controllers.exceptions.IllegalOrphanException;
import org.osiris.persistence.controllers.exceptions.NonexistentEntityException;
import org.osiris.persistence.controllers.exceptions.PreexistingEntityException;


public interface ProyectoInterface {

	public abstract EntityManager getEntityManager();

	public abstract void create(Proyecto proyecto)
			throws PreexistingEntityException, Exception;

	public abstract void edit(Proyecto proyecto) throws IllegalOrphanException,
			NonexistentEntityException, Exception;

	public abstract void destroy(Long id) throws IllegalOrphanException,
			NonexistentEntityException;

	public abstract List<Proyecto> findProyectoEntities();

	public abstract List<Proyecto> findProyectoEntities(int maxResults,
			int firstResult);

	public abstract Proyecto findProyecto(Long id);

	public abstract int getProyectoCount();
	
	public List<Proyecto> buscarProyectos(String cliente, 
			String descripcion, 
			String estado,
			Date fechaalta,
			Long idProyecto,
			String nombre,
			String referencia,
			String usuario);

}